package action;

import com.opensymphony.xwork2.ActionSupport;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import model.Aluno;
import model.Avaliacao;
import model.AvaliacaoId;
import model.Professor;
import model.Turma;

public class NotaFrequenciaAction extends ActionSupport {

    private String operacao;
    private List<Turma> turmas;
    private List<Professor> professores;
    private int codTurma;
    private int matriculaProfessor;
    private int matriculaAluno;
    private Turma turma;
    private List<Avaliacao> avaliacoes;
    private Avaliacao avaliacao;
    private int semestre;
    private String[] semestres = {"1","2"};
    private String[] anos = {"2008","2009","2010","2011","2012","2013","2014"};
    private int ano;
    private String[] pesquisaList = {"Todas", "Ano/Semestre"};
    private String pesquisa;
    private Aluno aluno;

    public String getPesquisa() {
        return pesquisa;
    }

    public void setPesquisa(String pesquisa) {
        this.pesquisa = pesquisa;
    }

    public Aluno getAluno() {
        return aluno;
    }

    public void setAluno(Aluno aluno) {
        this.aluno = aluno;
    }
    
    public String[] getPesquisaList() {
        return pesquisaList;
    }

    public void setPesquisaList(String[] pesquisaList) {
        this.pesquisaList = pesquisaList;
    }
    
    public int getSemestre() {
        return semestre;
    }

    public void setSemestre(int semestre) {
        this.semestre = semestre;
    }

    public String[] getSemestres() {
        return semestres;
    }

    public void setSemestres(String[] semestres) {
        this.semestres = semestres;
    }

    public String[] getAnos() {
        return anos;
    }

    public void setAnos(String[] anos) {
        this.anos = anos;
    }

    public int getAno() {
        return ano;
    }

    public void setAno(int ano) {
        this.ano = ano;
    }

    public Avaliacao getAvaliacao() {
        return avaliacao;
    }

    public void setAvaliacao(Avaliacao avaliacao) {
        this.avaliacao = avaliacao;
    }
    
    public List<Avaliacao> getAvaliacoes() {
        return avaliacoes;
    }

    public void setAvaliacoes(List<Avaliacao> avaliacoes) {
        this.avaliacoes = avaliacoes;
    }

    public int getMatriculaAluno() {
        return matriculaAluno;
    }

    public void setMatriculaAluno(int matriculaAluno) {
        this.matriculaAluno = matriculaAluno;
    }

    public String getOperacao() {
        return operacao;
    }

    public void setOperacao(String operacao) {
        this.operacao = operacao;
    }

    public List<Turma> getTurmas() {
        return turmas;
    }

    public void setTurmas(List<Turma> turmas) {
        this.turmas = turmas;
    }

    public List<Professor> getProfessores() {
        return professores;
    }

    public void setProfessores(List<Professor> professores) {
        this.professores = professores;
    }

    public int getCodTurma() {
        return codTurma;
    }

    public void setCodTurma(int codTurma) {
        this.codTurma = codTurma;
    }

    public int getMatriculaProfessor() {
        return matriculaProfessor;
    }

    public void setMatriculaProfessor(int matriculaProfessor) {
        this.matriculaProfessor = matriculaProfessor;
    }

    public Turma getTurma() {
        return turma;
    }

    public void setTurma(Turma turma) {
        this.turma = turma;
    }

    public String pesquisar() throws ClassNotFoundException, SQLException {
        professores = Professor.obterProfessores();
        if (operacao == null) {
            turmas = Turma.obterTurmas();
            List<Turma> turmaExcluir = new ArrayList<Turma>();

            for (Turma t : turmas) {
                if (t.getProfessor().getMatricula() != matriculaProfessor) {
                    turmaExcluir.add(t);
                }
            }

            turmas.removeAll(turmaExcluir);
        }
        return "pesquisar";
    }
    
    public String editar() throws ClassNotFoundException, SQLException{
        turma = Turma.obterTurma(codTurma);
        avaliacoes = Avaliacao.obterAvaliacoesPorTurma(codTurma);
        
        return "manter";
    }
    
    public String manter() throws SQLException, ClassNotFoundException{
        AvaliacaoId avaliacaoId = new AvaliacaoId(matriculaAluno, codTurma);
        avaliacao = Avaliacao.obterAvaliacao(avaliacaoId);
        return "manterNotaAluno";
    }
    
    public String gravar() throws SQLException, ClassNotFoundException{
        AvaliacaoId avaliacaoId = new AvaliacaoId(matriculaAluno, codTurma);
        avaliacao.setId(avaliacaoId);
        avaliacao.alterar();
        return editar();
    }
    
    public String consultar() throws SQLException, ClassNotFoundException{
        aluno = Aluno.obterAluno(matriculaAluno);
        if(pesquisa == null || pesquisa.equals("Todas")){
            avaliacoes = Avaliacao.obterAvaliacoesPorAluno(matriculaAluno);
        } else {
            avaliacoes = Avaliacao.obterAvaliacoesPorAnoSemestre(ano, semestre, matriculaAluno);
        }
        
        return "consultar";
    }
    
    public String voltar(){
        return "voltar";
    }
    

}
